草庐IT

LeetCode - 198 打家劫舍

全部标签

Leetcode算法系列| 1. 两数之和(四种解法)

目录1.题目2.题解解法一:暴力枚举解法二:哈希表解法解法三:双指针(有序状态)解法四:二分查找(有序状态)1.题目给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例1:输入:nums=[2,7,11,15],target=9输出:[0,1]解释:因为nums[0]+nums[1]==9,返回[0,1]。示例2:输入:nums=[3,2,4],target=6输出:[1,2]示例3:输入:nums=[3,3

leetcode 101.对称二叉树

 学习这部分还是要多画图,多思考101.对称二叉树题目给你一个二叉树的根节点root,检查它是否轴对称。题目链接力扣(LeetCode)官网-全球极客挚爱的技术成长平台文字和画图分析  明确结束条件和继续递归条件判断是否对称,我们一定是拿左子树和右子树进行对比,(这里的根节点反而没有那么重要)如下图,这是遍历思路图1:图2:从图我们可以知道:结束条件有以下几种情况:当左子树的值不等于右子树的值,返回false当左子树和右子树都为空,返回true(如图一3,4号)当左子树和右子树只有一个为空,返回false(如图二2号)(结束条件有先后顺序,为了防止是空树现象,一定要先验证这个)从图中可以明白,

leetcode 100.相同的树

涉及到递归,最好多画图理解,希望对你们有帮助100.相同的树题目给你两棵二叉树的根节点p和q,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。题目链接力扣(LeetCode)官网-全球极客挚爱的技术成长平台文字和画图分析思考递归进行的条件和结束的条件是什么列举递归可能会出现的情况针对上面两个问题进行解答:要想找两个树的结构相同有点麻烦,换个思路,我们找它们不同所以我们需要先对比两者的根节点,再去对比左子树和右子树[很明显,我们采取的是前序遍历整个节点]在递归的时候,每一次根节点都发生变化,只要根节点对应的数值不同,就返回false结束递归(

LeetCode算法题解(动态规划)|LeetCoed62. 不同路径、LeetCode63. 不同路径 II

一、LeetCoed62.不同路径题目链接:62.不同路径题目描述:一个机器人位于一个 mxn 网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?示例1:输入:m=3,n=7输出:28示例2:输入:m=3,n=2输出:3解释:从左上角开始,总共有3条路径可以到达右下角。1.向右->向下->向下2.向下->向下->向右3.向下->向右->向下示例3:输入:m=7,n=3输出:28示例4:输入:m=3,n=3输出:6提示:1题目数据保证答案小于等于 2*109算法分析:dp

Java LeetCode篇-二叉树经典解法(实现:判断平衡二叉树、找两个节点最近的祖先等)

🔥博客主页: 【小扳_-CSDN博客】❤感谢大家点赞👍收藏⭐评论✍  文章目录    1.0平衡二叉树    1.1实现判断平衡二叉树的思路    1.2代码实现判断平衡二叉树    2.0二叉树的层序遍历        2.1实现二叉树层序遍历的思路     2.2代码实现二叉树层序遍历    3.0二叉树的最近公共祖先        3.1实现二叉树的最近公共祖先的思路    3.2 代码实现二叉树的最近公共祖先    4.0根据二叉树创建字符串    4.1实现根据二叉树创建字符串的思路    4.2代码实现根据二叉树创建字符串    1.0平衡二叉树题目:        给定一个二叉树

代码随想录 Day43 动态规划11 LeetCode T309 买卖股票的最佳时期含冷冻期 T714买卖股票的最佳时机含手续费

LeetCodeT309买卖股票的最佳时机含冷冻期题目链接:309.买卖股票的最佳时机含冷冻期-力扣(LeetCode)题目思路:这题其实就是将卖出的状态拆分成三个状态1.前两天就卖出并一直保持卖出的状态2.今天卖出的状态3.今天是冷冻期的状态当然还有一个持有的状态下面我们用动规五部曲来分析1.确定dp数组含义dp[i][j]同样表示第i天在第j个状态的最大钱数2.确定递推公式//持有状态要么是之前就是持有状态的延续,要么就是冷冻期结束买入,要么就是卖出状态买入,三者取最大值即可dp[i][0]//卖出持续状态  维持前面的卖出状态或者是冷冻期结束维持卖出状态dp[i][1]//当天卖出状态就

算法leetcode|92. 反转链表 II(rust重拳出击)

文章目录92.反转链表II:样例1:样例2:提示:进阶:分析:题解:rust:go:c++:python:java:92.反转链表II:给你单链表的头指针head和两个整数left和right,其中left。请你反转从位置left到位置right的链表节点,返回反转后的链表。样例1:输入: head=[1,2,3,4,5],left=2,right=4 输出: [1,4,3,2,5]样例2:输入: head=[5],left=1,right=1 输出: [5]提示:链表中节点数目为n1-5001进阶:你可以使用一趟扫描完成反转吗?将链表分成3部分,即前面不需要反转的部分,中间需要反转的

Java LeetCode篇-深入了解关于栈的经典解法(栈实现:中缀表达式转后缀)

🔥博客主页: 【小扳_-CSDN博客】❤感谢大家点赞👍收藏⭐评论✍   文章目录    1.0中缀表达式转后缀说明    1.1实现中缀表达式转后缀思路    2.0逆波兰表达式求值    2.1实现逆波兰表达式求值思路    3.0有效的括号    3.1实现有效的括号思路    4.0栈的压入、弹出序列    4.1实现栈的压入、弹出序列思路    5.0最小栈    5.1实现最小栈思路    1.0中缀表达式转后缀说明        中缀表达式转后缀表达式是一种常见的算术表达式转换方法,它将中缀表达式(即常见的人类习惯的表达方式,例如("3+4*2")转换为后缀表达式(也称为逆波兰表达

leetcode 面试题 02.02. 返回倒数第k个节点

提建议就是,有些题还是有联系的,建议就收看完 876.链表的中间节点(http://t.csdnimg.cn/7axLa),再将这一题联系起来面试题02.02.返回倒数第k个节点题目:实现一种算法,找出单向链表中倒数第k个节点。返回该节点的值。说明:给定的k保证是有效的。题目链接力扣(LeetCode)官网-全球极客挚爱的技术成长平台文字和画图分析这题和快慢指针有点像(返回876.链表的中间节点),我们定义两个指针fast指针和slow指针,都存放头节点的地址这里我们有两种思路:fast先比slow多走k步,然后同时走完链表(放循环里面)fast先比slow多走k-1步,然后同时走完链表(放循

代码随想录算法训练营第一天 | LeetCode 704. 二分查找、35. 搜索插入位置、 34. 在排序数组中查找元素的第一个和最后一个位置、 27. 移除元素

今日刷题心得体会(未看视频讲解):1、二分搜索:涉及要找target前、后的元素时,注意数组是否溢出。704.二分查找题目链接:704.二分查找-力扣(LeetCode)想法:使用二分查找代码实现:intsearch(int*nums,intnumsSize,inttarget){intleft=0,right=numsSize-1,mid=(left+right)/2,ans=-1;while(lefttarget){right=mid-1;mid=(left+right)/2;}elseif(nums[mid]==target){ans=mid;break;}}returnans;}遇到的